Das neue Workbenchfeeling


Externe Schnittstelle von DirectDos

DirectDosfenster haben eine Schnittstelle für externe Programme. Dazu sendet ein fremdes Programm mit der Kennung "TOOL" einen Aktionsrequest an ein oder alle DDFenster.

Derzeit sind definiert:
CDIRChangeDir
INFOSendet Informationen zum betreffenden Fenster
QUITBeende den Task
REPOREPOsitioniere Fenster nach (X-Y) mit der Größe (Weite,Höhe)
WBRSWB Refresh, der Task soll sein Fenster schließen und nach xx Ticks wieder öffnen

Wie programmiert man so etwas?

Example: REPO

    {* Array[Long]: PositionArray,0,0,0,0*}
    {* Incblock: Puffer,100*}
    SendID=FindTask(0)
    DND_WhoIsOnline(&Puffer,100)
    Zeiger1==#Puffer
    Zeiger1->(DDFenster)
    While DDFenster#0
      {
        Zeiger==#PositionArray    
        (Left,Top,Width,Height)->Zeiger
        Result=DND_GiveData(DDFenster,0,>AktionTags:DND_SendTask,*SendID|
                                                    DND_ID,"TOOL"|
                                                    DND_Pointer,PositionArray|
                                                    DND_Mode,"REPO"|
                                                    Tag_Done,Null)
        TaskData==0
        While TaskData##DND_Reply
         {
           While (Result=DND_Getdata(SendID))=-1
            {
              Delay(10)
            }
           TaskData=.lDataStructure.Data(Result)
           DND_FreeData(Result)
         }
      }
    RTS

Example: QUIT

    {* Incblock: Puffer,100*}
    SendID=FindTask(0)
    DND_WhoIsOnline(&Puffer,100)
    Zeiger1==#Puffer
    Zeiger1->(DDFenster)
    While DDFenster#0
      {
        Result=DND_GiveData(DDFenster,0,>AktionTags:DND_SendTask,*SendID|
                                                    DND_ID,"TOOL"|
                                                    DND_Mode,"QUIT"|
                                                    Tag_Done,Null)
        TaskData==0
        While TaskData##DND_Reply
         {
           While (Result=DND_Getdata(SendID))=-1
            {
              Delay(10)
            }
           TaskData=.lDataStructure.Data(Result)
           DND_FreeData(Result)
         }
      }
    RTS


DirectDos & his Homepage designed by I.P.S. © 1999